# Generated manually to add missing permissions

from django.db import migrations


def add_missing_permissions(apps, schema_editor):
    """
    添加缺失的权限数据
    """
    Permission = apps.get_model('authentication', 'Permission')
    Role = apps.get_model('authentication', 'Role')
    
    # 定义缺失的权限数据
    missing_permissions_data = [
        # 系统消息管理权限
        {
            'code': 'system.message.list',
            'name': '查看系统消息列表',
            'description': '允许查看系统消息列表',
            'category': 'system_message_management'
        },
        {
            'code': 'system.message.detail',
            'name': '查看系统消息详情',
            'description': '允许查看系统消息详情',
            'category': 'system_message_management'
        },
        {
            'code': 'system.message.create',
            'name': '创建系统消息',
            'description': '允许创建系统消息',
            'category': 'system_message_management'
        },
        {
            'code': 'system.message.update',
            'name': '修改系统消息',
            'description': '允许修改系统消息',
            'category': 'system_message_management'
        },
        {
            'code': 'system.message.delete',
            'name': '删除系统消息',
            'description': '允许删除系统消息',
            'category': 'system_message_management'
        },
        
        # 热门航线权限
        {
            'code': 'popular.routes.list',
            'name': '查看热门航线',
            'description': '允许查看热门航线列表',
            'category': 'route_management'
        },
        
        # 用户收藏航线权限
        {
            'code': 'user.favorite.routes.list',
            'name': '查看用户收藏航线',
            'description': '允许查看用户收藏的航线',
            'category': 'user_management'
        },
        {
            'code': 'user.favorite.routes.create',
            'name': '添加收藏航线',
            'description': '允许用户添加收藏航线',
            'category': 'user_management'
        },
        {
            'code': 'user.favorite.routes.delete',
            'name': '删除收藏航线',
            'description': '允许用户删除收藏航线',
            'category': 'user_management'
        },
    ]
    
    # 批量创建权限
    new_permissions = []
    for perm_data in missing_permissions_data:
        permission, created = Permission.objects.get_or_create(
            code=perm_data['code'],
            defaults=perm_data
        )
        if created:
            new_permissions.append(permission)
    
    # 给超级管理员角色添加新权限
    try:
        admin_role = Role.objects.get(name='超级管理员')
        if new_permissions:
            admin_role.permissions.add(*new_permissions)
            print(f"已为超级管理员角色添加 {len(new_permissions)} 个新权限")
    except Role.DoesNotExist:
        print("超级管理员角色不存在，跳过权限分配")


def reverse_missing_permissions(apps, schema_editor):
    """
    回滚权限数据
    """
    Permission = apps.get_model('authentication', 'Permission')
    
    # 删除添加的权限
    permission_codes = [
        'system.message.list',
        'system.message.detail', 
        'system.message.create',
        'system.message.update',
        'system.message.delete',
        'popular.routes.list',
        'user.favorite.routes.list',
        'user.favorite.routes.create',
        'user.favorite.routes.delete',
    ]
    
    Permission.objects.filter(code__in=permission_codes).delete()


class Migration(migrations.Migration):

    dependencies = [
        ('authentication', '0008_auto_20250610_2221'),
    ]

    operations = [
        migrations.RunPython(
            add_missing_permissions,
            reverse_missing_permissions
        ),
    ]